package awk.designModel.singleton;

/**
 * 使用ThreadLocal实现：线程安全，ThreadLocal采用以空间换时间的方式，
 * 为每一个线程都提供一份变量，因此可以同时访问而互不影响。
 */
public class ThreadLocalClassE {
	//1.私有化构造方法，使得在类的外部不能调用此方法，限制产生多个对象
	private ThreadLocalClassE(){ }
	//2.在类的内部创建一个类的实例
	private static final ThreadLocal<ThreadLocalClassE> tls = ThreadLocal.withInitial(ThreadLocalClassE::new);
	//3.对外部提供调用方法：将创建的对象返回，只能通过类来调用
	public static ThreadLocalClassE  getInstance(){
		return tls.get();
	}

	//测试
	public static void main(String[] args) {
		ThreadLocalClassE a = ThreadLocalClassE.getInstance();
		ThreadLocalClassE b = ThreadLocalClassE.getInstance();
		System.out.println(a==b);
	}
}
